package cn.butcher.mapper;

import cn.butcher.pojo.Leave;
import cn.butcher.vo.LeaveForm;
import cn.butcher.vo.StudentLeaveMsg;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;
import java.util.Map;

@Mapper
@Repository
// 和component controller service 一样的，只是为了分层，名字不同，
// 作用都是把这个实例放到ioc容器里面，也就是注册到spring
// 这个不是必须的，因为接口无法实例化，那就是说不能放入ioc容器里,
// 但是如果不写，idea会报错，我们最终拿到的，是mybatis帮我们实例化号的接口实现类的对象

// 因为都是和学生相关，那么我们就把与学生相关的放在一起好了 ，确保没有问题

// 实体类可以建同一个
public interface StudentMapper {

    String getNameById(@Param("id") int id);

    String getTeacherNameById(@Param("cId") int cId);

    int insertLeave(LeaveForm leaveForm);

    /**
     * 查询自己已通过审核的请假信息
     *
     * @param status 状态 代码复用
     * @param id 学号、教工编号
     * @return 请假信息列表
     */
    List<StudentLeaveMsg> getStudentLeaveMsg(char status, int id);

    /**
     * 提前销假，改变请假状态
     *
     * @param status 状态
     * @param id     请假编号
     * @return 成功返回1
     */
    int changeLeaveStatus(char status, int id);

    /**
     * 延期申请，我们就不记录延期，或者请假多少次了，直接在原来的表上改
     *
     * @param reason 延期原因
     * @param date   日期
     * @param id     请假编号
     * @return 成功返回1
     */
    int delayLeaveDate(String reason, String date, int id);

    Map<String, String> getTeacherPhoneByLeId(int leId);
}
